contribution 与 sdk?
SDK
加载自定义 sdk 的方式
- webpack 会将 VS Code 包 external 出去,并不会实际打包,而实际其内容包是底座注入到扩展进程中去的。
- 自定义的 sdk 包
- 同样需要 external 掉
- tsconfig 中引入
- import types 包或者在 typings or 根目录下新建 d.ts 文件
状态在扩展之间如何共享?
- getExtension 获取扩展的上下文。
- 调用 setContext
- 通过 command 互相调用
- indexdb 缓存写入
文件系统
什么是 fileSystemProvider ?
什么是 folderUri 和 workspaceUri?
搜索(文本搜索、文件搜索) 的支持
- 实现 SearchProvider 即可。 但是这只是理论上可行的方式,如果仓库很大的话文本匹配速度会很慢,而且如果没有全量加载文件系统的所有文件,文本搜索的遍历效率很低很低。
- VS Code 的实现方式: 首次搜索时,会加载一个包含全仓库文本的压缩包,在 provider 中加载并读取所所。
- 搜索接口的实现:需要调用 es 之类的实现,而不是直接通过后端的文件系统搜索实现。
文件系统的协同编辑
解决方案:
- xxx 老业务的解决办法: 解锁、抢锁编辑,可以保证每次编辑和修改都是同一个人。
- git 的接入,通过分支的概念,需要 commit & push,并且主动合并到 master 之后,才会合入主干。 但是与传统的 git pull/merge 一样需要前端处理解冲突的问题。
- vsls 包的接入,通过 websocket 实现的实时协同编辑。
文件系统的设计重难点?
运行
外联无法点击,需要关闭 csp ?
LSP 扩展
VS Code git 的支持方式
- 实现 SCMProvider ?
新应用如何接入?
其他扩展
还有其他什么扩展
- 表管理
- 工作流等